package br.ufrpe.bsi.pvs.database.roupa;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.ufrpe.bsi.pvs.database.Conexao;
import br.ufrpe.bsi.pvs.model.roupa.TipoCorporeo;

public class TipoCorporeoDAOImpl implements TipoCorporeoDAO {

	@Override
	public void salvar(TipoCorporeo object) {
		
	}

	@Override
	public void remover(TipoCorporeo object) {
		
	}

	@Override
	public void remover(Serializable id) {
		
	}

	@Override
	public List<TipoCorporeo> listar() {
		List<TipoCorporeo> TipoCorporeos = new ArrayList<TipoCorporeo>();

		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con.prepareStatement("select * from tipo_corporeo");
			ResultSet rs = ps.executeQuery();
			
			while (rs.next()) {
				TipoCorporeos.add(TipoCorporeo.getTipoCorporeo(rs.getString("nome")));
			}
 
			ps.close();
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant list TipoCorporeos");
		}

		return TipoCorporeos;
	}

	@Override
	public TipoCorporeo pesquisar(Serializable id) {
		TipoCorporeo tipo = null;
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("select nome from tipo_corporeo where id = ?");
			ps.setInt(1, (Integer) id);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				tipo = TipoCorporeo.getTipoCorporeo(rs.getString("nome"));
 
			ps.close();
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found TipoCorporeo id: " + id);
		}

		return tipo;
	}

	@Override
	public TipoCorporeo pesquisar(String name) {
		TipoCorporeo tipo = null;
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("select nome from tipo_corporeo where nome = ?");
			ps.setString(1, name);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				tipo = TipoCorporeo.getTipoCorporeo(rs.getString("nome"));
 
			ps.close();
		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found TipoCorporeo named: " + name);
		}

		return tipo;
	}

}
